package com.itheima.chinamobileai.tool;

import com.itheima.chinamobileai.po.MobilePackage;
import com.itheima.chinamobileai.po.Rule;
import com.itheima.chinamobileai.po.UserRequirement;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

@Component
public class PackageQueryTool {

    @Tool(description = "根据用户需求查询匹配的手机套餐")
    public List<MobilePackage> queryPackages(UserRequirement requirement) {
        // 模拟数据查询逻辑
        return findMatchingPackages(requirement);
    }

    @Tool(description = "查询相关政策规则")
    public Rule queryRule(String ruleType) {
        // 根据规则类型查询规则
        return findRuleByType(ruleType);
    }

    private List<MobilePackage> findMatchingPackages(UserRequirement requirement) {
        // 实现匹配逻辑
        // 返回匹配的套餐列表
        return Arrays.asList(
                MobilePackage.builder()
                        .name("全球通尊享")
                        .price(198.0)
                        .data("80GB")
                        .callTime("1000分钟")
                        .extraService("国际漫游免费/视频会员")
                        .contract("12个月")
                        .promotion("首月免费")
                        .build(),
                MobilePackage.builder()
                        .name("动感青春卡")
                        .price(58.0)
                        .data("30GB")
                        .callTime("300分钟")
                        .extraService("校园免费通话")
                        .contract("6个月")
                        .promotion("送流量包")
                        .build(),
                MobilePackage.builder()
                        .name("家庭共享套餐")
                        .price(128.0)
                        .data("50GB")
                        .callTime("500分钟")
                        .extraService("3个亲情号免费互打")
                        .contract("12个月")
                        .promotion("免费副卡")
                        .build()
        );
    }

    private Rule findRuleByType(String ruleType) {
        // 根据类型查找规则
        switch (ruleType) {
            case "contract":
                return Rule.builder()
                        .id("rule_01")
                        .type("contract")
                        .description("用户在合约期内更换套餐需支付违约金，违约金为剩余合约月份×月租费×20%")
                        .build();
            case "transfer":
                return Rule.builder()
                        .id("rule_02")
                        .type("transfer")
                        .description("携号转网用户需满足以下条件：1.实名制注册满120天；2.无欠费记录；3.无合约期限制；4.申请号码入网满90天")
                        .build();
            case "data":
                return Rule.builder()
                        .id("rule_03")
                        .type("data")
                        .description("套餐内流量使用完毕后，超出部分按0.29元/MB计费，或购买流量包更优惠")
                        .build();
            case "family":
                return Rule.builder()
                        .id("rule_04")
                        .type("family")
                        .description("亲情网主号每月支付10元可享5个省内成员免费互打，超出成员每人每月2元")
                        .build();
            case "roaming":
                return Rule.builder()
                        .id("rule_05")
                        .type("roaming")
                        .description("国内漫游时，流量按0.29元/MB计费，语音通话主叫0.6元/分钟，被叫免费")
                        .build();
            default:
                return Rule.builder()
                        .id("rule_default")
                        .type("default")
                        .description("暂无相关规则信息")
                        .build();
        }
    }
}